//
//
//class Solution {
//    public int[] topKFrequent(int[] nums, int k) {
//        PriorityQueue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>(new Comparator<>() {
//            public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
//                return o1.getValue() - o2.getValue();
//            }
//        });
//        Map<Integer, Integer> hash = new HashMap<>();
//        for (int x : nums) {
//            int count = hash.getOrDefault(x, 0);
//            hash.put(x, count + 1);
//        }
//        int i = 0;
//        for (Map.Entry<Integer, Integer> cur : hash.entrySet()) {
//            if (i < k) {
//                queue.offer(cur);
//            } else {
//                Map.Entry<Integer, Integer> top = queue.peek();
//                if (cur.getValue() > top.getValue()) {
//                    queue.poll();
//                    queue.offer(cur);
//                }
//            }
//            i++;
//        }
//        int[] ret = new int[k];
//        for (i = 0; i < ret.length; i++) {
//            ret[i] = queue.poll().getKey();
//        }
//        return ret;
//    }
//}